package A1_栈和队列;

import java.util.*;
import java.util.stream.Collectors;

public class LC_347前K个高频元素 {
    public static void main(String[] args){
        int[] nums = {1,1,1,2,2,3};
        int k = 2;
        System.out.println(topKFrequent(nums,k));
    }
    public static int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i]))
                map.put(nums[i],map.get(nums[i])+1);
            else
                map.put(nums[i],1);
        }

        List<Map.Entry<Integer,Integer>> list=new ArrayList<>(map.entrySet());
        list.sort(Map.Entry.comparingByValue());
        Map<Integer,Integer> map1=list.stream().collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(existingValue, newValue) -> existingValue, LinkedHashMap::new));
//        // 先获取map集合的所有键的set集合，即为map中所有key值的集合
//        Set<Integer> keySet = map1.keySet();
//        // 有了set集合，就可以获取其迭代器
//        Iterator<Integer> it = keySet.iterator();
        int[] mapvalue=new int[map.size()];
        int id=0;
        for(Integer i:map1.keySet())
            mapvalue[id++]=i;
        int[] res=new int[k];
        for(int i=0;i<k;i++){
            res[i]=mapvalue[mapvalue.length-i-1];
        }
        return res;
    }
}
